package cuiyt.leetcode.dichotomy.demoe;

/**
 * @author cyt
 * @create 2020-10-09 16:43
 */
public class Ta {
    /**
     * 关键点在于： 应该在反转点进行前后经行搜索。
     *
     * @param nums
     * @return
     */
    public int findMin(int[] nums) {
        /**
         *只有一个元素
         */
        if (nums.length == 1) {
            return nums[0];
        }
        /**
         * 本身就是升序的
         */
        int l = 0, r = nums.length - 1;
        if (nums[r] > nums[0]) {
            return nums[0];
        }
        while (l <= r) {
            int mid = l + (r - l) / 2;

            if (nums[mid] > nums[mid + 1]) {
                return nums[mid + 1];
            }

            if (nums[mid - 1] > nums[mid]) {
                return nums[mid];
            }

            if (nums[mid] > nums[0]) {
                l = mid + 1;

            } else {
                r = mid - 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        Ta ta = new Ta();
        int[] ints = {2, 3, 4, 5, 1};
        System.out.println(ta.findMin(ints));
    }
}
